package com.magic.threadlocal;

/**
 * 需求：线程隔离
 * 在多线程并发场景下，每个线程中的变量都是相互独立
 * 线程A： 设置（变量1） 获取（变量1）
 * 线程B： 设置（变量2） 获取（变量2）
 *
 * @author laoma
 * @create 2021-06-04 11:59
 */
public class DemoTest1 {

    ThreadLocal<String> t1 = new ThreadLocal<>();

    // 变量
    private String content;

    private String getContent() {
        // return content;
        String s = t1.get();
        return s;
    }

    private void setContent(String content) {
        // this.content = content;
        // 变量content绑定到当前线程
        t1.set(content);
    }

    public static void main(String[] args) {
        DemoTest1 demo = new DemoTest1();

        for (int i = 0; i < 5; i++) {
            Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {

                /*
                每个线程存一个变量，过一会取出这个变量
                 */
                    demo.setContent(Thread.currentThread().getName() + "的数据");
                    System.out.println("-----------------------------------");
                    System.out.println(Thread.currentThread().getName() + "------>" + demo.getContent());
                }

            });
            thread.setName("线程"+i);// 线程 0~4
            thread.start();
        }

    }
}
